package com.glsc.ngateway.oaflow.service.xirtrade.enums;

import com.glsc.ngateway.common.base.exception.PlatformException;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 衡泰交易指令业务同步OA流程类型
 *
 * @author xuchang
 */
@Getter
@AllArgsConstructor
public enum XirTradeOaFlowTypeEnum {
    //-----资金运营部
    资金运营部_公司债务融资申请流程("资金运营部_公司债务融资申请流程"),
    资金运营部_资金运营部自有资金划付流程("资金运营部_资金运营部自有资金划付流程"),
    //-----固收部
    固定收益部_固定收益部自有资金划拨流程("固定收益部_固定收益部自有资金划拨流程"),
    资金运营部_资金运营部业务交易对手准入流程("资金运营部_资金运营部业务交易对手准入流程"),
    ;
    /**
     * 编码
     */
    private final String code;

    public static XirTradeOaFlowTypeEnum seek(String code) {
        return Arrays.stream(XirTradeOaFlowTypeEnum.values())
                .filter(o -> o.getCode().equals(code))
                .findFirst()
                .orElseThrow(() -> PlatformException.error(String.format("未找到类型:%s", code)));
    }

    public static List<String> all() {
        return Arrays.stream(XirTradeOaFlowTypeEnum.values()).map(XirTradeOaFlowTypeEnum::getCode).collect(Collectors.toList());
    }
}
